查看原文
其他

【学员分享】深度学习计算机视觉,两个星期从入门到上线

李健 有三AI 2019-12-26

Hello,everyone!今天给大家讲述一个深度学习项目。

在讲这个项目之前,很多业外人士可能不明白人工智能(AI),机器学习(ML),深度学习(DL),这三者是什么关系。先科普一下小常识,它们三者是包含子集关系。即人工智能是最大范畴,包含机器学习,机器学习包含深度学习。

好了,进入正题。本人所解决的是人脸识别登录的业务,最后抽象为一个深度学习的三分类问题。接下来会以解决问题的顺序进行展开描述。用的深度学习框架是caffe,网络结构是mobilenet。


01


数据的获取

首先深度学习的数据很重要。而数据集的获取则应该根据业务需求去寻找。本项目是图片数据集的获取,可以从各大开源数据集寻找,之后发现有些类别的数据集量还是不够大,又去各大影视中寻找录屏,然后按帧数切分成图片。


02

数据的清洗

该部分将消耗大概百分之七十的时间。数据清洗包括对图片数据集的筛选,分类,又称标注数据。尤其是数据的分类很重要。数据分类的准确性可能就决定了你训练模型能否收敛。该部分是个细活,过程比较琐碎,暂时先不说。数据集分为9类,为啥是9类,解决的不是3分类问题吗?因为前期3分类训练模型的准确率不是很高,考虑到3个大类内部的数据方差过大,于是调整策略为训练为9分类问题,最后测试为3分类,因为最后业务解决的还是3分类问题。


以下是9类图片标注标准:



03

训练模型

      接下来就是训练模型了,模型的训练由于是在服务器上训练,加上模型不是很大,训练很快,正常跑个4个小时左右就可以迭代出一个模型。模型的acc,loss,随迭代次数的关系可以通过绘制图表观看,很直观。训练集上的acc只能做个参考,主要还是最后测试的表现,因为你模型可能参数很多,最后导致模型过拟合。

      该部分还包含模型的调优,也就是调参,这是个学问,值得好好继续学习。


04

测试模型

该部分是拿一批最接近业务的数据去测试,看每一类准确率。3分类是标注为0,1,2三个大类。由于业务追求0,1,2的准确率很高,允许2的召回率可以低一些,所以测试时要关注这些。


下面是训练模型在验证集上的表现:


acc

0.9183

acc0

0.9676

acc1

0.8

acc2

0.9723


准确率已经达到业务需求了,然后就结束了吗?当然没有。作为一个专业人士,我们要追求细节,哈哈。因为训练的是9分类,我们要看9分类的具体情况,以及那些错分的样本是哪些。


下面是9类的结果:


acc

0.9183

acc0

0.9676

acc1

0.8748

acc2

7665

acc3

0.5178

acc4

0.8152

acc5

0.9125

acc6

0.9837

acc7

0.5072

acc8

0.6136


怎么3,7的准确率那么低,怎么解决了?此处先埋下伏笔。

祭出大杀器,矩阵统计。


下图是在服务器上运行结果的矩阵部分截图:



看着很不舒服,于是把它调整到文本中,方便观看。



以上矩阵共有arrays1,arrays2,arrays3三个矩阵,每个矩阵的每一行代表真实标签label,共有9行,依次表示label从0到8,每一列代表预测标签predict,共有9列,依次表示predict从0到8,所以每个矩阵都是一个9*9的矩阵。arrays1表示共有81种可能组合,每一个元素表示模型把样本的label预测为predict的可能的个数。例如arrays1[0][0]表示模型把0预测为0的样本共有5975张。arrays2表示模型把样本的label预测为predict的概率总和,例如arrays2[0][0]表示模型把0预测为0的样本概率总和为5.53879372e+03。arrays3表示模型把样本的label预测为predict的概率平均值,arrays3=arrays2/arrays1。例如arrays3[0][0]表示模型把0预测为0的样本概率均值为0.92699476。从arrays3可以看出,主对角线的值(表示模型预测正确的概率均值)还是蛮大的,其它值不是很大,说明模型的整体性能还是挺优的。

好,下面解决上面埋下的伏笔: 3,7的准确率怎么那么低,答案得在arrays3中寻找,我们得看label为3时,分为predict的情况,从arrays3可以看出,arrays3[3][0]较大,表示模型把3错分为0的概率,再去看对应的arrays1[3][0]=9, 表示模型把3错分为0的样本数为9,数据量不是很大啊,然后我们再去查看这9个样本的情况,发现是自己标注错了,好了,这不是模型的锅,模型是还是不错的。同理,分析7的准确率情况。


经过以上的环节,基本深度学习的模型可以出第一版本了,之后再根据业务需求看模型是否需要迭代。


感谢鹏哥带我。


注:图片全部为实验数据图片


—END—



如果想加入我们,后台留言吧

微信

Longlongtogo

公众号内容

1 图像基础|2 深度学习|3 行业信息


往期精彩

 

【深度学习图像项目实战-从入门到上线1】怎样学会科学的调研并启动一个项目

 

【技术综述】一文道尽softmax loss及其变种

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存